﻿using UnityEngine;

namespace TC
{
    /// <summary>
    /// 无状态的流，对应简单的graph，这种graph被行为树调用的时候，是没有状态返回的，
    /// 对于外界来说，这个流是一次执行完成的。
    /// 这种图不能执行行为树里的控制节点
    /// </summary>
    public class SimpleFlow : Dispatcher
    {
        public Node cur;

        public override void Update(float delta)
        {
            base.Update(delta);

            if (cur != null && cur is IUpdate)
            {
                (cur as IUpdate).OnUpdate(delta);
            }
        }

        public override void Call(FlowPort p)
        {
#if UNITY_EDITOR
            if (p.parent.HasBreak)
                Debug.Break();
#endif

            Port other = p.parent.graph.GetConnect(p);
            if (other != null)
            {
                cur = other.parent;
                other.parent.Execute(this);
            }
            cur = null;
        }
    }
}
